home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Hot Mix 17
/
Hot Mix 17.iso
/
HM17_SGI
/
research
/
lib
/
funct.pro
< prev
next >
Wrap
Text File
|
1997-07-08
|
2KB
|
70 lines
; $Id: funct.pro,v 1.3 1997/01/15 03:11:50 ali Exp $
;
; Copyright (c) 1982-1997, Research Systems, Inc. All rights reserved.
; Unauthorized reproduction prohibited.
;
PRO FUNCT,X,A,F,PDER
;+
; NAME:
; FUNCT
;
; PURPOSE:
; Evaluate the sum of a Gaussian and a 2nd-order polynomial
; and optionally return the value of its partial derivatives.
; Normally, this function is used by CURVEFIT to fit the
; sum of a line and a varying background to actual data.
;
; CATEGORY:
; E2 - Curve and surface fitting.
;
; CALLING SEQUENCE:
; FUNCT, X, A, F [, Pder]
;
; INPUTS:
; X: The values of the independent variable.
; A: The parameters of the equation described in PROCEDURE below.
;
; OUTPUTS:
; F: The value of the function at each X(i).
;
; OPTIONAL OUTPUT PARAMETERS:
; Pder: An array of the size (N_ELEMENTS(X),6) that contains the
; partial derivatives. Pder(i,j) represents the derivative
; at the i'th point with respect to j'th parameter.
;
; COMMON BLOCKS:
; None.
;
; SIDE EFFECTS:
; None.
;
; RESTRICTIONS:
; None.
;
; PROCEDURE:
; F = A(0)*EXP(-Z^2/2) + A(3) + A(4)*X + A(5)*X^2
; Z = (X-A(1))/A(2)
;
; MODIFICATION HISTORY:
; WRITTEN, DMS, RSI, SEPT, 1982.
; Modified, DMS, Oct 1990. Avoids divide by 0 if A(2) is 0.
;-
ON_ERROR,2 ;Return to caller if an error occurs
if a[2] ne 0.0 then Z = (X-A[1])/A[2] $ ;GET Z
else z= 10.
EZ = EXP(-Z^2/2.)*(ABS(Z) LE 7.) ;GAUSSIAN PART IGNORE SMALL TERMS
F = A[0]*EZ + A[3] + A[4]*X + A[5]*X^2 ;FUNCTIONS.
IF N_PARAMS(0) LE 3 THEN RETURN ;NEED PARTIAL?
;
PDER = FLTARR(N_ELEMENTS(X),6) ;YES, MAKE ARRAY.
PDER[0,0] = EZ ;COMPUTE PARTIALS
if a[2] ne 0. then PDER[0,1] = A[0] * EZ * Z/A[2]
PDER[0,2] = PDER[*,1] * Z
PDER[*,3] = 1.
PDER[0,4] = X
PDER[0,5] = X^2
RETURN
END